#ifndef ETGRECUNALMACENAMIENTO_H_
#define ETGRECUNALMACENAMIENTO_H_

#include "EstrategiaRecurso.h"
#include "../Indice.inc.h"
#include "../etg_almacenamiento.inc.h"
#include "../almacenamiento.inc.h"
#include "../Indice/HashChange.h"
#include "../Indice/EstrategiaIndice.h"
#include "../PrimaryKey.h"
#include "../Dato.h"
#include <vector>

using namespace std;

class EtgRecUnAlmacenamiento : public EstrategiaRecurso{
  private:
        void insertarArbol(Dato *dato);
        void insertarHashing(Dato *dato);        				
        void modificarArbol(Dato *dato);
        void modificarHashing(Dato *dato);    
        void eliminarArbol(Dato *datoNvo);    				
        void eliminarHashing(Dato *dato);    
        void ejecutarCambios(vector<HashChange> *vecAux);


  public:       
        EtgRecUnAlmacenamiento(TipoMemoria tipoMemoria,TipoIndice tipoIndice,EstrategiaIndice *indice,TipoAlmacenamiento tipoAlmacenamiento,TipoEstrategia tipoEstrategia,Almacenamiento **persistencia,void* ptr,PrimaryKey *PK);
      
        void insertar(Dato *datoNvo);
				
		void modificar(Dato *datoNvo);
			
		void eliminar(Dato *datoNvo);
	
		void leer(Dato *datoAux);

		//void listar(Dato *dini, Dato *dfin);
		
};

#endif /*ESTRECUNALMACENAMIENTO_H_*/
